package com.ship.dispatch.bpm.service;

import com.ship.common.core.web.domain.JsonResult;
import com.ship.dispatch.bpm.vo.BpmStartVO;

import java.util.Map;

/**
 *@title 流程实例操作接口
 *@description 流程实例操作接口
 *@author yl
 *@create 2023-12-12
 */
public interface ProcessInstanceService {

    /**
     * 创建流程实例
     * @param processKey 流程定义 key
     * @param params 流程参数
     * @param businessKey 业务id
     * @return 流程实例id
     */
    public JsonResult createProcessInstance(String processKey, Map<String,Object> params, String businessKey);

    public String createProcessInstance2(String processKey, Map<String,Object> params, String businessKey);

    /**
     * 删除流程定义
     *
     * @param processKey 流程部署ID act_ge_bytearray 表中 deployment_id值
     */
    void delete(String processKey);

    /**
     * 结束流程实例
     *
     * @param vo
     */
    //void stopProcessInstance(FlowTaskVo vo);

    /**
     * 激活或挂起流程实例
     *
     * @param state      状态
     * @param instanceId 流程实例ID
     */
    void updateProcessInstanceState(Integer state, String instanceId);

    /**
     * 删除流程实例ID
     *
     * @param instanceId   流程实例ID
     * @param deleteReason 删除原因
     */
    void delete(String instanceId, String deleteReason);

    /**
     * 创建流程并配置候选组
     * @param bpmStartVO
     * @return
     */
    JsonResult<String> createProcessInstance(BpmStartVO bpmStartVO);

    /**
     * 取消流程实例
     * @param processInstaneId
     * @return
     */
    JsonResult cacenProcessInstance(String processInstaneId);

    /**
     * 取消流程实例
     * @param processsInstanceId
     */
    void cancelProcessInstanceId(String processsInstanceId);

    JsonResult<String> createSubleassProcessInstance(BpmStartVO bpmStartVO);
}
